#ifndef VENUS_EFFECTS_EFFECT_H
#define VENUS_EFFECTS_EFFECT_H

#include "common/venus.h"
#include "graphics/program_glsl.h"

namespace venus {
class Effect {
 public:
  virtual ~Effect() { }
  virtual void Begin() const = 0;
  virtual void End() const = 0;
  bool IsValid() const { return program_.is_valid() && program_.is_linked(); }
  //how to set parameters? different effect has different parameters
 protected:
  ProgramGLSL program_;
};
} // namespace venus

#endif // VENUS_EFFECTS_EFFECT_H
